﻿using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Headers;
using System.Web;
using System.Web.Http;

namespace Pay.Api.App_Start
{
    public class LotWebApiConfig
    {
        public static void ConfigureApi(HttpConfiguration config)
        {
            //跨域
            //var cors = new EnableCorsAttribute("*", "*", "*");
            //var cors = new EnableCorsAttribute("http://api.lot-center.com" ?? "*", "Content-Type, Accept" ?? "*", "GET, POST, PUT, PATCH, DELETE, OPTIONS" ?? "*");
            //cors.SupportsCredentials = true;
            //config.EnableCors(cors);

            //解决IE下访问是下载文件的问题
            GlobalConfiguration.Configuration.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

            // 取消注释下面的代码行可对具有 IQueryable 或 IQueryable<T> 返回类型的操作启用查询支持。
            // 若要避免处理意外查询或恶意查询，请使用 QueryableAttribute 上的验证设置来验证传入查询。
            // 有关详细信息，请访问 http://go.microsoft.com/fwlink/?LinkId=279712。
            //config.EnableQuerySupport();
            // 若要在应用程序中禁用跟踪，请注释掉或删除以下代码行
            // 有关详细信息，请参阅: http://www.asp.net/web-api
            // config.EnableSystemDiagnosticsTracing();
            // 干掉XML序列化器
            config.Formatters.Remove(config.Formatters.XmlFormatter);
            // 对datetime属性格式化输出
            // 由于IOS不支持此类格式,放弃使用毫秒
            // config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter() { DateTimeFormat = "yyyy/MM/dd HH:mm:ss:fff" });
            config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter() { DateTimeFormat = "yyyy/MM/dd HH:mm:ss" });
            // 解决json序列化时的循环引用问题
            config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
            // 对 JSON 数据使用混合大小写。驼峰式,但是是javascript 首字母小写形式.
            config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            // 对 JSON 数据使用混合大小写。跟属性名同样的大小.输出
            //config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();

            //config.Filters.Add(new UserTrackingAttribute());
            //config.MessageHandlers.Add(new UrlParamsMessageHandler());
        }
    }
}